package com.hll.interceptor;

/**
 * @author: Mr.Hu
 * @create: 2021-03-13 22:17
 */
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/*
我之前认为interceptor有点像filter，但过程不同，inter的本质就是AOP编程，整个过程可以是controller的前中后。并且仅拦截controller
filter却只能是在访问前或访问后，任何类型的url都能过滤
* */
public class InterceptorTest implements HandlerInterceptor {

  // 在请求处理的方法之前执行
  // 如果返回true执行下一个拦截器
  // 如果返回false就不执行下一个拦截器
  public boolean preHandle(
      HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o)
      throws Exception {
    System.out.println("------------处理前------------");
    return true;
  }

  // 在请求处理方法执行之后执行
  public void postHandle(
      HttpServletRequest httpServletRequest,
      HttpServletResponse httpServletResponse,
      Object o,
      ModelAndView modelAndView)
      throws Exception {
    System.out.println("------------处理后------------");
  }

  // 在dispatcherServlet处理后执行,做清理工作.
  public void afterCompletion(
      HttpServletRequest httpServletRequest,
      HttpServletResponse httpServletResponse,
      Object o,
      Exception e)
      throws Exception {
    System.out.println("------------清理------------");
  }
}
